The SCSI interface may be best described as a device independent input/output bus which allows a variety of peripheral devices to be connected to a personal computer system. SCSI refers to Small Computer Systems Interface and was initially developed to provide a disk drive interface that supported logical addressing of data rather than the more prevalent physical addressing. In addition, the SCSI interface was developed to transfer information in parallel, byte-wise fashion instead of serially, thus, ending certain compatibility difficulties associated with developing new disk drive technologies and bringing them to the market place. The electrical characteristics and signal protocols of the SCSI interface were developed in such a manner that the requirements of various peripheral devices could be accommodated with relative ease and flexibility. In particular, the SCSI interface protocol defines a number of commands which are available for accessing and querying a particular peripheral device regarding the parameter set required for the device to operate correctly. This particular feature of the SCSI interface makes it possible for a system designer to write a software device driver program for a generalized peripheral device, without regard to device specific parameter set details.
In accordance with the various versions of the SCSI interface, such as SCSI-1, SCSI-2, and SCSI-3, anywhere from 8 to 32 individual peripheral devices can be addressed on an SCSI bus depending on whether the bus is an 8-bit bus, a 16-bit bus or a 32-bit bus. These devices are generally categorized as initiators and targets, with any particular peripheral device able to play either role at any particular point in time. Specifically, a peripheral device functioning as an initiator is a device that initiates an information transaction or data transfer by giving another peripheral device a particular task to perform. An example of an initiator might well be the SCSI host adapter of a personal computer system, while an example of a typical target device might well be a rotating disk data storage system such as a hard disk drive or CD-ROM. A target peripheral device may thus be seen as the device which carries out the task identified by the initiator. As was mentioned previously, an SCSI interface bus configuration may have any combination of initiator and target devices, so long as the total does not exceed the number allowed by the bus width (8, 16, or 32).
However, regardless of the width of the SCSI bus, all data or information transfer transactions must take place in accord with the SCSI protocol, in which initiators must arbitrate for control of the SCSI bus before any message, command or data transaction is allowed to take place between an initiator and a target device. Conventionally, an arbitration winning initiator selects a particular target device to receive messages, commands and data in order to perform an information transfer transaction. If an initiator device requires several target devices to perform certain functions, that initiator must continue to re-arbitrate for control of the bus and sequentially address each of the target devices, in turn. For each target transaction, there is an arbitration, selection, a message phase, and a phase wherein the initiator transmits command and data information to the target, prior to the targets sending a message back to the initiator indicating receipt. This protocol activity takes place sequentially for each target device, with each transaction being completed, before the next is initiated.
Upon completion of each data transfer transaction, the SCSI bus is conventionally transition to a bus free condition, after which SCSI initiator devices arbitrate for control of the bus to initiate a next data transfer transaction. Alternatively, a target device, wishing to reconnect to the bus, may arbitrate for control, during which a connection (reconnection) is established between the target device and the original initiator.
Given the significant increases in SCSI information transmission speeds over the past few years, it will be understood that there is a significant penalty associated with transitioning to a bus free condition in order to allow a next arbitration and selection phase, for each data transfer transaction.
Accordingly, it will be seen that there is a significant need for some means to truncate the arbitration and selection portions of the conventional SCSI transaction protocol, particularly in those cases where a target device is giving up control of the bus and where further target devices have queued commands ready to execute. In those circurnstances, an improved SCSI transaction protocol would allow a current target device to pass bus control directly to a subsequent target device without the need to affirmatively enter a bus free condition at the end of each process. Such an SCSI bus protocol would allow bus control to pass among a multiplicity of target devices without the intervention of an initiator, but still allow an initiator device to preempt the process and take control of the bus where conditions so warrant.